Fox's Git Mirrors
Node / rns-mirrors / Reticulum-Go.git / files / examples / wasm / vendor / github.com / dunglas / httpsfv / boolean.go
Displaying Raw • Download
examples/wasm/vendor/github.com/dunglas/httpsfv/boolean.go 633735d797cc5f5d48cb2e22e8fd7cd743930daf (633735d7) Text, 958 B
package httpsfv
import (
"errors"
"io"
)
// ErrInvalidBooleanFormat is returned when a boolean format is invalid.
var ErrInvalidBooleanFormat = errors.New("invalid boolean format")
// marshalBoolean serializes as defined in
// https://httpwg.org/specs/rfc9651.html#ser-boolean.
func marshalBoolean(bd io.StringWriter, b bool) error {
if b {
_, err := bd.WriteString("?1")
return err
}
_, err := bd.WriteString("?0")
return err
}
// parseBoolean parses as defined in
// https://httpwg.org/specs/rfc9651.html#parse-boolean.
func parseBoolean(s *scanner) (bool, error) {
if s.eof() || s.data[s.off] != '?' {
return false, &UnmarshalError{s.off, ErrInvalidBooleanFormat}
}
s.off++
if s.eof() {
return false, &UnmarshalError{s.off, ErrInvalidBooleanFormat}
}
switch s.data[s.off] {
case '0':
s.off++
return false, nil
case '1':
s.off++
return true, nil
}
return false, &UnmarshalError{s.off, ErrInvalidBooleanFormat}
}
Served by rngit 1.5.4 - Generated in 0.02s